package com.csxy.systemmanager.utils;

import com.csxy.systemmanager.dto.MenuDto;
import com.csxy.systemmanager.entity.Menu;

import java.util.ArrayList;
import java.util.List;

public class MenuTreeBuild {
    /**
     * 递归查找子节点
     *
     * @param treeNodes
     * @return
     */
    private static MenuDto findChildren(MenuDto treeNode, List<Menu> treeNodes) {
        //遍历节点
        for (Menu it : treeNodes) {
            MenuDto menuDto = new MenuDto(it.getId(), it.getIcon(), it.getMenuName(), it.getPath(), new ArrayList<>());
            //判断节点
            if (treeNode.getId() == it.getParentId()) {
                treeNode.getMenus().add(findChildren(menuDto,treeNodes));
            }
        }
        return treeNode;
    }

    public static List<MenuDto> buildMenuTree(List<Menu> allNodes) {
        // 新建集合
        List<MenuDto> root = new ArrayList();
        //遍历所有的数据
        allNodes.forEach(node -> {
            MenuDto menuDto = new MenuDto(node.getId(), node.getIcon(), node.getMenuName(), node.getPath(), new ArrayList<>());
            //判断是否为根节点
            if (node.getParentId()== 0) {
                //加入根节点
                root.add(findChildren(menuDto, allNodes));
            }

        });
        return root;
    }

}
